#!/bin/bash

# 设定 code-server 版本和端口
USER_NAME=$(whoami)  # 获取当前用户名
PASSWORD="handsfree" # 设置访问 code-server 的密码
CODE_SERVER_PORT=9005 # 设置 code-server 的监听端口
sudo fuser -k 9005/tcp

# 检查 Ubuntu 版本并设定 code-server 版本
UBUNTU_VERSION=$(lsb_release -rs)
if [[ "$UBUNTU_VERSION" == "18.04" ]]; then
    CODE_SERVER_VERSION="3.9.3"
elif [[ "$UBUNTU_VERSION" == "20.04" ]]; then
    CODE_SERVER_VERSION="4.9.1"
else
    echo "此脚本仅支持 Ubuntu 18.04 和 20.04"
    exit 1
fi

# 获取当前脚本所在的目录，切换到脚本所在目录
current_dir="$(dirname "$(readlink -f "$0")")"
cd $current_dir

# 更新系统并安装必要的软件包
sudo apt update
sudo apt install -y curl software-properties-common apt-transport-https

# 下载并安装指定版本的 code-server
echo "正在下载 code-server 版本 $CODE_SERVER_VERSION..."
wget https://handsfree-mv.oss-cn-shenzhen.aliyuncs.com/2024test/code-server_${CODE_SERVER_VERSION}_amd64.deb

echo "正在安装 code-server..."
sudo dpkg -i code-server_${CODE_SERVER_VERSION}_amd64.deb
sudo apt --fix-broken install -y  # 如果有依赖问题，修复它们

# 创建配置文件目录并生成配置文件
CONFIG_DIR="/home/$USER_NAME/.config/code-server"
CONFIG_FILE="$CONFIG_DIR/config.yaml"

echo "正在配置 code-server..."

mkdir -p $CONFIG_DIR  # 创建配置文件目录
cat > $CONFIG_FILE <<EOL
bind-addr: 0.0.0.0:$CODE_SERVER_PORT  # 监听所有地址
auth: password                        # 启用密码验证
password: $PASSWORD                   # 设置访问密码
cert: false                           # 不启用 HTTPS
EOL

# 创建 systemd 服务文件以便 code-server 在后台运行
echo "正在设置 systemd 服务文件..."

SERVICE_FILE="/etc/systemd/system/code-server.service"

sudo bash -c "cat > $SERVICE_FILE" <<EOL
[Unit]
Description=code-server
After=network.target

[Service]
Type=simple
User=$USER_NAME
ExecStart=/usr/bin/code-server
Restart=always
WorkingDirectory=/home/$USER_NAME
Environment=PASSWORD=$PASSWORD

[Install]
WantedBy=multi-user.target
EOL

# 重新加载 systemctl 配置并启动 code-server 服务
echo "正在启用并启动 code-server 服务..."

sudo systemctl daemon-reload     # 重新加载 systemd 配置
sudo systemctl enable code-server # 启用开机自动启动
sudo systemctl start code-server  # 启动 code-server 服务

# 检查服务状态
sudo systemctl status code-server

echo "安装和配置完成。你可以通过 http://<your-server-ip>:$CODE_SERVER_PORT 访问 code-server。"
